import java.util.Scanner;

/**
 * @author yu
 * @date 2025年04月17日 10:00
 */
public class _09_dp_03_746minCostClimbingStair {
    public static int minCostClimbingStair(int[] cost){
        // 方式一：第一步不支付费用
        int len = cost.length;
        int[] dp = new int[len + 1];
        // 从下标为 0 或下标为 1 的台阶开始，因此支付费用为0
        dp[0] = 0;dp[1] = 0;
        // 计算到达每一层台阶的最小费用
        for (int i = 2; i <= len; i++) {
            dp[i] = Math.min(dp[i - 1] + cost[i - 1], dp[i - 2] + cost[i - 2]);
//            System.out.print(dp[i]+ " ");
        }
//        System.out.println("  ");
        return dp[len];

        /*// 方式二：第一步支付费用
        int[] dp = new int[cost.length];
        dp[0] = cost[0];
        dp[1] = cost[1];
        for (int i = 2; i < cost.length; i++) {
            dp[i] = Math.min(dp[i - 1], dp[i - 2]) + cost[i];
        }
        //最后一步，如果是由倒数第二步爬，则最后一步的体力花费可以不用算
        return Math.min(dp[cost.length - 1], dp[cost.length - 2]);*/
    }

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        // 读取一行输入
        String input = scanner.nextLine();
        // 按空格分割输入字符串
        String[] strArray = input.split(" ");
        // 创建整数数组
        int[] costArray = new int[strArray.length];
        // 将字符串数组转换为整数数组
        for (int i = 0; i < strArray.length; i++) {
            costArray[i] = Integer.parseInt(strArray[i]);
        }
        /*// 打印数组元素（可根据需求修改）
        for (int num : costArray) {
            System.out.print(num + " ");
        }*/
        System.out.println("  ");
        System.out.println(minCostClimbingStair(costArray));
        scanner.close();
    }
}
